#!/bin/sh /etc/rc.common
# Copyright (C) 2012 OpenWrt.org

START=91

SERVICE_SIG="KILL"
SERVICE_PID_FILE="/var/run/dhcrelay4.pid"
SERVICE_USE_PID=1

start() {
	. /lib/functions/network.sh
	config_load dhcrelay
	local args=""

	local enabled
	config_get_bool enabled ipv4 enabled 0
	[ "$enabled" -eq 0 ] && return 0

	# listen interfaces
	local interfaces
	local ifname
	config_get interfaces ipv4 interfaces
	for net in $interfaces; do
		if network_get_device ifname "$net"; then
			append args "-i $ifname"
		fi
	done
	config_get interfaces ipv4 upstream_interfaces
	for net in $interfaces; do
		if network_get_device ifname "$net"; then
			append args "-iu $ifname"
		fi
	done
	config_get interfaces ipv4 downstream_interfaces
	for net in $interfaces; do
		if network_get_device ifname "$net"; then
			append args "-id $ifname"
		fi
	done

	# link selection sub-option (RFC3527)
	local link_selection
	config_get link_selection ipv4 link_selection
	if network_get_device ifname "$link_selection"; then
		append args "-U $ifname"
	fi

	# relay mode
	local relay_mode
	config_get relay_mode ipv4 relay_mode
	[ -n "$relay_mode" ] && append args "-m $relay_mode"

	# dhcp server address
	local server
	config_get server ipv4 dhcpserver
	[ -n "$server" ] || return 0
	append args "$server"

	service_start /usr/sbin/dhcrelay -4 -q \
		-pf $SERVICE_PID_FILE $args
}

stop() {
	service_stop /usr/sbin/dhcrelay
}
